With computer-based applications in high demand, and particularly Web applications designed for use in connection with the World Wide Web, the importance of the quality assurance process is ever-increasing. Applications, and Web applications in particular, are difficult to test because the set of all possible user inputs allowed by the interface of an application can be very large. Previously known methods of validating Web applications specify checks on Web application artifacts, such as, for example, screens, buttons, links, and form fields by directly referring to the underlying implementation of the artifact. This typically requires some knowledge of the underlying implementation of the Web application. In contrast, system-level (end-to-end) Web application test engineers, who do not have knowledge about the underlying implementation of the Web application, typically manually exercise use-case test scenarios on a Web application, one by one, by visually observing artifacts presented with the deployed Web application and “firing” events at these artifacts. As an example, firing events at artifacts may include clicking, as for example with a mouse or other input device, on buttons and links, or entering data into forms displayed in a user interface, such as a Web browser displaying a rendered instance of the Web application. Recent advances have overcome the need for manual testing of certain artifacts, including buttons, links and forms.
However, with respect to forms in a Web application, the problem of automating testing of an application is further complicated by the fact that complex input validation code may exist in the Web application that checks the entered data to ensure that it matches certain constraints. Traditional approaches to automated testing do not take into account such constraints, thereby limiting test coverage. For instance, a constraint for a username may be that the username must be of a length between 6 and 15 characters, must not contain non-alphanumeric characters, must have at least one capital letter, and at least one number.